libxc: Verify Magic number when reading dump
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Mon, 6 Mar 2006 14:04:18 +0000 (15:04 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Mon, 6 Mar 2006 14:04:18 +0000 (15:04 +0100)
The xen core files record a magic number,
but when they are loaded it isn't checked.
This patch resolves this.

Signed-Off-By: Horms <horms@verge.net.au>
tools/libxc/xc_core.c
tools/libxc/xc_ptrace_core.c
tools/libxc/xenctrl.h

index 0c763bbf8f3180088b6125b77554a98b031c554d..34c6d16a8cb848e2c577eca7a8fedeea31bc21de 100644 (file)
@@ -61,7 +61,7 @@ xc_domain_dumpcore(int xc_handle,
  
     nr_pages = info.nr_pages;
 
-    header.xch_magic = 0xF00FEBED; 
+    header.xch_magic = XC_CORE_MAGIC;
     header.xch_nr_vcpus = nr_vcpus;
     header.xch_nr_pages = nr_pages;
     header.xch_ctxt_offset = sizeof(struct xc_core_header);
index 84286cf9e4f71072cc68e2f958a714c61b726dff..7b2233e5a48f6ae8ca7e52dbdc94622a3b843b29 100644 (file)
@@ -111,6 +111,13 @@ xc_waitdomain_core(
         if (read(domfd, &header, sizeof(header)) != sizeof(header))
             return -1;
 
+        if (header.xch_magic != XC_CORE_MAGIC) {
+                printf("Magic number missmatch: 0x%08x (file) != "
+                                        " 0x%08x (code)\n", header.xch_magic,
+                                        XC_CORE_MAGIC);
+                return -1;
+        }
+
         nr_pages = header.xch_nr_pages;
         nr_vcpus = header.xch_nr_vcpus;
         pages_offset = header.xch_pages_offset;
index 605e0681f92d034734123b7e26f1ab3a4a8996e7..f08fd25bc18d763a0ea1766077b75687bad2d820 100644 (file)
@@ -92,6 +92,7 @@ typedef struct xc_core_header {
     unsigned int xch_pages_offset;
 } xc_core_header_t;
 
+#define XC_CORE_MAGIC 0xF00FEBED
 
 long xc_ptrace_core(
     int xc_handle,